#include "StdAfx.h"
#include "ConfigData.h"
#include <utils/encryptfile.h>
#include <tinyxml/tinyxml.h>

#define   CONFIG_FILE_FIXKEY    "50307719FABCDF85CF8A490DCB0FAB56"

CConfigData::CConfigData(void):m_nPort(8099)
{
	//	HRESULT ListAvailableSQLServers(LPSQLDMONAMELIST* ppServerNames)

}

CConfigData::~CConfigData(void)
{

}


bool CConfigData::WriteConfigFile(CString& strFileName)
{

	TiXmlDocument doc;  
	TiXmlPrinter   printer;
	TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0","UTF-8", "no");
	doc.LinkEndChild( decl ); 

	TiXmlElement * root = new TiXmlElement("config");  
	doc.LinkEndChild( root );  

	//port
	{
		TiXmlElement * port= new TiXmlElement( "port" );  
		CStringA strPort;
		strPort.Format("%d",m_nPort);
		port->LinkEndChild(new TiXmlText( strPort));
		root->LinkEndChild(port);

	}
	//ModServ
// 	{
// 		TiXmlElement * ModServ= new TiXmlElement( "ModServ" );  
// 		ModServ->LinkEndChild(new TiXmlText( m_mod_server.c_str()));
// 		root->LinkEndChild(ModServ);
// 
// 	}

	//PubkeyServ
// 	{
// 		TiXmlElement * PubkeyServ= new TiXmlElement( "PubkeyServ" );  
// 		PubkeyServ->LinkEndChild(new TiXmlText( m_pubkey_server.c_str()));
// 		root->LinkEndChild(PubkeyServ);
// 
// 	}
	//PrikeyServ
// 	{
// 		TiXmlElement * PrikeyServ= new TiXmlElement( "PrikeyServ" );  
// 		PrikeyServ->LinkEndChild(new TiXmlText( m_prikey_server.c_str()));
// 		root->LinkEndChild(PrikeyServ);
// 
// 	}
	//Server
	{
		TiXmlElement * Server= new TiXmlElement( "Server" );  
		Server->LinkEndChild(new TiXmlText( m_strServer));
		root->LinkEndChild(Server);

	}
	
	//Database
	{
		TiXmlElement * Database= new TiXmlElement( "Database" );  
		Database->LinkEndChild(new TiXmlText( m_Database));
		root->LinkEndChild(Database);

	}

	//UID
	{
		TiXmlElement * UID= new TiXmlElement( "UID" );  
		UID->LinkEndChild(new TiXmlText( m_strUID));
		root->LinkEndChild(UID);

	}
	//PWD
	{
		TiXmlElement * PWD= new TiXmlElement( "PWD" );  
		PWD->LinkEndChild(new TiXmlText( m_strPWD));
		root->LinkEndChild(PWD);

	}

	doc.Accept(&printer);

	CEncryptFile	fileloader;
	if(fileloader.Save(printer.CStr() ,printer.Size(),strFileName,CONFIG_FILE_FIXKEY))
	{
		return true;
	}
	return false;
}

bool CConfigData::ReadConfigFile(CString& strFileName)
{
	CString strFile;
	CEncryptFile	fileloader;
	if(!fileloader.LoadFile(strFileName,strFile,CONFIG_FILE_FIXKEY))
	{
		return false;
	}

	TiXmlDocument  doc;
	TiXmlElement*     pConfig;

	doc.Parse(CStringA(strFile));
	pConfig  = doc.RootElement();

	//port
	{
		TiXmlElement*     port;
		CStringA strPort;
		port = pConfig->FirstChildElement("port");
		if(!port)
		{
			return false;
		}
		strPort = port->GetText();
		m_nPort = atoi(strPort);
	}

	//ModServ
// 	{
// 
// 		TiXmlElement * ModServ= pConfig->FirstChildElement("ModServ" );  
// 		if(!ModServ)
// 		{
// 			return false;
// 		}
// 		m_mod_server = ModServ->GetText();
// 
// 
// 	}

	//PubkeyServ
// 	{
// 		TiXmlElement * PubkeyServ= pConfig->FirstChildElement( "PubkeyServ" );  
// 		if(!PubkeyServ)
// 		{
// 			return false;
// 		}
// 		m_pubkey_server = PubkeyServ->GetText();
// 
// 	}
	//PrikeyServ
// 	{
// 		TiXmlElement * PrikeyServ= pConfig->FirstChildElement( "PrikeyServ" );  
// 		if(!PrikeyServ)
// 		{
// 			return false;
// 		}
// 		m_prikey_server = PrikeyServ->GetText();
// 	}

	//Server
	{
		TiXmlElement * Server= pConfig->FirstChildElement( "Server" );  
		if(!Server)
		{
			return false;
		}
		m_strServer = Server->GetText();

	}
	//Database
	{

		TiXmlElement * Database= pConfig->FirstChildElement( "Database" );  
		if(!Database)
		{
			return false;
		}
		m_Database = Database->GetText();

	}
	//UID
	{
		TiXmlElement * UID= pConfig->FirstChildElement( "UID" );  
		if(!UID)
		{
			return false;
		}
		m_strUID = UID->GetText();

	}
	//PWD
	{
		TiXmlElement * PWD= pConfig->FirstChildElement( "PWD" );  
		if(!PWD)
		{
			return false;
		}
		m_strPWD = PWD->GetText();

	}

	return true;
}

